/*
 * Copyright(c)2018,2025,guowenmeng24@163.comAllrightsreserved.
 */
package com.ddd.domain.user.service;

import com.ddd.client.user.dto.query.UserListByParamQuery;
import com.ddd.domain.user.model.entity.UserEntity;
import com.ddd.domain.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * UserService
 * 为了演示领域服务的使用，此处业务简单（没有处理跨实体的业务），可不写此领域服务，在app层直接调用 UserRepository
 *@author guowm
 *@date 2025/02/08
 */
@RequiredArgsConstructor
@Component
public class UserService {

    private final UserRepository userRepository;

    /**
     * 保存用户
     *
     * @param userEntity User Domain
     * @return 用户实体
     */
    public UserEntity save(UserEntity userEntity) {
       return userRepository.save(userEntity);
    }

    /**
     * 获取用户信息
     *
     * @param id 用户ID
     * @return 用户实体
     */
    public UserEntity findById(Long id) {
        return userRepository.findById(id);
    }

    /**
     * 根据条件查询
     *
     * @param userListByParamQuery 用户名等
     * @return List 用户实体
     */
    public List<UserEntity> findByParam(UserListByParamQuery userListByParamQuery){
        return userRepository.findByParam(userListByParamQuery);
    }

    /**
     * 获取密码信息
     *
     * @param username 用户名
     * @return 密码
     */
    public UserEntity findPasswordInfo(String username) {
        return userRepository.findPasswordInfo(username);
    }

    /**
     * 判断用户名是否已存在
     *
     * @param userId   用户ID
     * @param username 用户名
     * @return true-已存在
     */
    public Boolean checkByUsername(Long userId, String username) {
        return userRepository.checkByUsername(userId, username);
    }

    /**
     * 删除用户
     *
     * @param ids ids
     * @return 删除
     */
    public int deleteByIds(String[] ids) {
        return userRepository.deleteByIds(ids);
    }

}